#include "compile_run.hpp"
#include "../comm/httplib.h" //引入第三方网络库
using namespace ns_compile_and_run;
using namespace httplib;

//正确的使用方式
void Usage(std::string proc)
{
    std::cerr << "Usage: " << "\n\t" << proc << " port" << std::endl;
}

int main(int argc, char *argv[])
{
    if(argc != 2)
    {
        Usage(argv[0]);
        return 1;
    }

    //使用第三官库cpp-httplib将该服务打包形成一个网络服务
    //只需要将cpp-httplib.h拷贝到项目中，即可直接使用
    //cpp-httplib： 阻塞式多线程的一个网络http库，所以makefile要链接pthread库

    //使用cpp-httplib库中的Server类构造一个svr对象，
    Server svr;

    // svr.Get("/hello",[](const Request &req, Response &resp){
    //     // 用来进行基本测试
    //     resp.set_content("hello httplib,你好 httplib!", "text/plain;charset=utf-8");
    // });

    svr.Post("/compile_and_run", [](const Request &req, Response &resp)
    {
        // 用户请求的服务正文是我们想要的json string
        std::string in_json = req.body;
        std::string out_json;
        if(!in_json.empty())
        {
            CompileAndRun::Start(in_json, &out_json);
            resp.set_content(out_json, "application/json;charset=utf-8");
        }
    });

    //compileServer不需要给用户提供网站级的服务，不需要设置根目录

    //启动http服务
    svr.listen("0.0.0.0", atoi(argv[1])); s

    return 0;
}